﻿Imports Publics
Module ModuleDanhMuc

#Region "Set filter trên danh mục"

    Public Sub SetFilterConditionMa(ByRef _gridView As DanhMuc.VmsGridView, ByRef _column As DevExpress.XtraGrid.Columns.GridColumn, ByVal _fieldName As String, Optional ByVal _value As String = "", Optional ByVal _laChon As Boolean = False)
        'Thiết lập điều kiện lọc cho tất cả các cột trên gridview
        _gridView.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Default
        For Each item As DevExpress.XtraGrid.Columns.GridColumn In _gridView.Columns
            If _column.Equals(item) = False Then
                item.OptionsFilter.AutoFilterCondition = DevExpress.XtraGrid.Columns.AutoFilterCondition.Contains
            End If
            'Nếu là cột chọn thì không cho phép filter
            If item.FieldName.ToLower = "chon" Then
                item.OptionsFilter.AllowAutoFilter = False
                item.OptionsFilter.AllowFilter = False
            End If
        Next
        'Thiết lập điều kiện lọc lại cho riêng cột mã
        If New clsBienMoiTruong().PH_DM_LocCotMa = DieuKienLocCotMa.StartWith Then
            _column.OptionsFilter.AutoFilterCondition = DevExpress.XtraGrid.Columns.AutoFilterCondition.Default
            If _value <> "" AndAlso _value <> "*" Then
                _gridView.Columns(_fieldName).FilterInfo = New DevExpress.XtraGrid.Columns.ColumnFilterInfo("[" & _fieldName & "] like '" & _value & "%'")
            End If
        Else
            _column.OptionsFilter.AutoFilterCondition = DevExpress.XtraGrid.Columns.AutoFilterCondition.Contains
            If _value <> "" AndAlso _value <> "*" Then
                _gridView.Columns(_fieldName).FilterInfo = New DevExpress.XtraGrid.Columns.ColumnFilterInfo("[" & _fieldName & "] like '%" & _value & "%'")
            End If
        End If
        '
        If _value <> "" AndAlso _value <> "*" Then
            For i = 0 To _gridView.RowCount - 1
                Dim ma = _gridView.GetRowCellValue(i, _column)
                If ma IsNot Nothing AndAlso ma.ToString.StartsWith(_value) Then
                    _gridView.FocusedRowHandle = i
                    Return
                End If
            Next
        End If
        'Nếu không thấy row focus thì Focus cell lọc mã
        If _laChon Then
            _gridView.FocusedColumn = _column
            _gridView.FocusedRowHandle = DevExpress.XtraGrid.GridControl.AutoFilterRowHandle
        End If
    End Sub

    Public Sub SetFilterConditionMa(ByRef _gridView As Publics.VmsGridView, ByRef _column As DevExpress.XtraGrid.Columns.GridColumn, ByVal _fieldName As String, Optional ByVal _value As String = "", Optional ByVal _laChon As Boolean = False)
        'Thiết lập điều kiện lọc cho tất cả các cột trên gridview
        _gridView.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Default
        For Each item As DevExpress.XtraGrid.Columns.GridColumn In _gridView.Columns
            If _column.Equals(item) = False Then
                item.OptionsFilter.AutoFilterCondition = DevExpress.XtraGrid.Columns.AutoFilterCondition.Contains
            End If
            'Nếu là cột chọn thì không cho phép filter
            If item.FieldName.ToLower = "chon" Then
                item.OptionsFilter.AllowAutoFilter = False
                item.OptionsFilter.AllowFilter = False
            End If
        Next
        'Thiết lập điều kiện lọc lại cho riêng cột mã
        If New clsBienMoiTruong().PH_DM_LocCotMa = DieuKienLocCotMa.StartWith Then
            _column.OptionsFilter.AutoFilterCondition = DevExpress.XtraGrid.Columns.AutoFilterCondition.Default
            If _value <> "" AndAlso _value <> "*" Then
                _gridView.Columns(_fieldName).FilterInfo = New DevExpress.XtraGrid.Columns.ColumnFilterInfo("[" & _fieldName & "] like '" & _value & "%'")
            End If
        Else
            _column.OptionsFilter.AutoFilterCondition = DevExpress.XtraGrid.Columns.AutoFilterCondition.Contains
            If _value <> "" AndAlso _value <> "*" Then
                _gridView.Columns(_fieldName).FilterInfo = New DevExpress.XtraGrid.Columns.ColumnFilterInfo("[" & _fieldName & "] like '%" & _value & "%'")
            End If
        End If
        '
        If _value <> "" AndAlso _value <> "*" Then
            For i = 0 To _gridView.RowCount - 1
                Dim ma = _gridView.GetRowCellValue(i, _column)
                If ma IsNot Nothing AndAlso ma.ToString.StartsWith(_value) Then
                    _gridView.FocusedRowHandle = i
                    Return
                End If
            Next
        End If
        'Nếu không thấy row focus thì Focus cell lọc mã
        If _laChon Then
            _gridView.FocusedColumn = _column
            _gridView.FocusedRowHandle = DevExpress.XtraGrid.GridControl.AutoFilterRowHandle
        End If
    End Sub
#End Region

#Region "Lấy thông tin phím tắt"
    ''' <summary>
    ''' Lấy thông tin phím tắt cơ bản: 
    ''' Thêm, sửa, xóa, nạp lại, xuất dữ liệu, trợ giúp, đóng
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function GetLabelPhimTatCoBan(ByVal TenDanhMuc As String, ByVal Them As Boolean, ByVal Sua As Boolean, ByVal Xoa As Boolean) As String
        'Dim str As String = "Danh mục " & TenDanhMuc 'Bỏ cái này đi. Caption form có tên danh mục rồi cho cái này làm cái quái j nữa
        Dim str As String = "Phím tắt "
        If TenDanhMuc = "sản phẩm" Then
            str &= IIf(Them, GetStrKey(kThem), "") + IIf(Sua, GetStrKey(kSua), "") + IIf(Them, GetStrKey(kCopy), "") + IIf(Xoa, GetStrKey(kXoa), "") + _
                   GetStrKey(kLamTuoi) + GetStrKey(kXuat) + GetStrKey(kTroGiup) + GetStrKey(kThoat)
            'Bỏ: GetStrKey(kTimKiem) + 
        Else
            str &= IIf(Them, GetStrKey(kThem), "") + IIf(Sua, GetStrKey(kSua), "") + IIf(Xoa, GetStrKey(kXoa), "") + _
                   GetStrKey(kLamTuoi) + GetStrKey(kXuat) + GetStrKey(kTroGiup) + GetStrKey(kThoat)

        End If
        Return str
    End Function

    ''' <summary>
    ''' Lấy thông tin phím tắt cơ bản form cập nhật sản phẩm: 
    ''' Ghi và thêm, ghi và đóng, xóa, trợ giúp, đóng
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function GetLabelPhimTatCoBanCapNhatDanhMucSanPhamLapRap() As String
        Return GetStrKey(kGhiVaThem) + GetStrKey(kGhiVaDong) + GetStrKey(kXoa) + GetStrKey(kTroGiup) + GetStrKey(kThoat)
    End Function

    ''' <summary>
    ''' Lấy thông tin phím tắt cơ bản form cập nhật sản phẩm: 
    ''' Ghi và thêm, ghi và đóng, trợ giúp, đóng
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function GetLabelPhimTatCoBanCapNhatDanhMucCoGhiVaThem() As String
        Return GetStrKey(kGhiVaThem) + GetStrKey(kGhiVaDong) + GetStrKey(kTroGiup) + GetStrKey(kThoat)
    End Function

    ''' <summary>
    ''' Lấy thông tin phím tắt cơ bản form cập nhật: 
    ''' Ghi và đóng, trợ giúp, đóng
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function GetLabelPhimTatCoBanCapNhatDanhMuc() As String
        Return GetStrKey(kGhiVaDong) + GetStrKey(kTroGiup) + GetStrKey(kThoat)
    End Function

    ''' <summary>
    ''' Lấy thông tin phím tắt cơ bản form cập nhật: 
    ''' Ghi và thêm, Ghi và đóng, trợ giúp, đóng
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function GetLabelPhimTatCoBanCapNhatDonDat() As String
        Return GetStrKey(kGhiVaThem) + GetStrKey(kGhiVaDong) + GetStrKey(kTroGiup) + GetStrKey(kThoat)
    End Function

    Public Function GetStrKey(ByVal Phim As clsPhimTat) As String
        Try
            If Phim Is Nothing Then Return ""
            Dim strCaptionKey As String = ""
            Select Case Phim.MaNut
                Case pIdThem
                    strCaptionKey = " [" + Trim(Phim.TenNut) + ": " + _
                                    BtnAddNewCaption + "]"
                Case pIdSua
                    strCaptionKey = " [" + Trim(Phim.TenNut) + ": " + _
                                    BtnEditCaption + "]"
                Case pIdXoa
                    strCaptionKey = " [" + Trim(Phim.TenNut) + ": " + _
                                    BtnDeleteCaption + "]"
                Case pIdChon
                    strCaptionKey = " [" + Trim(Phim.TenNut) + ": " + _
                                    BtnAcceptCaption + "]"
                Case pIdXuat
                    strCaptionKey = " [" + Trim(Phim.TenNut) + ": " + _
                                    BtnExportDataCaption + "]"
                Case pIdThoat
                    strCaptionKey = " [" + Trim(Phim.TenNut) + ": " + _
                                    BtnCloseCaption + "]"
                Case pIdTimKiem
                    strCaptionKey = " [" + Trim(Phim.TenNut) + ": " + _
                                    BtnSearchCaption + "]"
                Case pIdTimTiep

                Case pIdGhiVaDong
                    strCaptionKey = " [" + Trim(Phim.TenNut) + ": " + _
                                    BtnSaveAndCloseCaption + "]"
                Case pIdGhiVaThem
                    strCaptionKey = " [" + Trim(Phim.TenNut) + ": " + _
                                    BtnSaveAndAddCaption + "]"
                Case pIdIn
                    strCaptionKey = " [" + Trim(Phim.TenNut) + ": " + _
                                    BtnPrintCaption + "]"
                Case pIdTroGiup
                    strCaptionKey = " [" + Trim(Phim.TenNut) + ": " + _
                                    BtnHelpCaption + "]"
                Case pIdCopy
                    strCaptionKey = " [" + Trim(Phim.TenNut) + ": " + _
                                    BtnCopyCaption + "]"
                Case pIdLamTuoi
                    strCaptionKey = " [" + Trim(Phim.TenNut) + ": " + _
                                    BtnRefreshCaption + "]"
            End Select
            Return strCaptionKey
        Catch ex As Exception
            MsgInfo(ex.Message)
            Return Nothing
        End Try
    End Function

    Public Function GetInfoKey(ByVal maPhim As String) As clsPhimTat
        Dim Key As New clsPhimTat
        Try
            Key = (From db In vlstPhimTat Where db.MaNut = maPhim Select db).FirstOrDefault
        Catch ex As Exception
            MsgInfo(ex.Message)
        End Try
        Return Key
    End Function

    Public kThem As clsPhimTat = GetInfoKey(pIdThem)
    Public kSua As clsPhimTat = GetInfoKey(pIdSua)
    Public kXoa As clsPhimTat = GetInfoKey(pIdXoa)
    Public kCopy As clsPhimTat = GetInfoKey(pIdCopy)
    Public kChon As clsPhimTat = GetInfoKey(pIdChon)
    Public kXuat As clsPhimTat = GetInfoKey(pIdXuat)
    Public kThoat As clsPhimTat = GetInfoKey(pIdThoat)
    Public kTimKiem As clsPhimTat = GetInfoKey(pIdTimKiem)
    Public kTimTiep As clsPhimTat = GetInfoKey(pIdTimTiep)
    Public kGhiVaDong As clsPhimTat = GetInfoKey(pIdGhiVaDong)
    Public kGhiVaThem As clsPhimTat = GetInfoKey(pIdGhiVaThem)
    Public kIn As clsPhimTat = GetInfoKey(pIdIn)
    Public kLamTuoi As clsPhimTat = GetInfoKey(pIdLamTuoi)
    Public kTroGiup As clsPhimTat = GetInfoKey(pIdTroGiup)
#End Region

   
End Module
